Contents
Object Domain V1.05

"Object Domain" is an object oriented design and analysis tool. It implements the "Booch Notation" and is based on the book "OBJECT-ORIENTED ANALYSIS AND DESIGN WITH APPLICATIONS, Second Edition" by Grady Booch [Benjamin/Cummings 1994].

Copyright 1995 Dirk Vermeersch.

This program is shareware. You are allowed to try this software  for 30 days. If you want to continue using this software after the trial period you have to register the program.

Diagrams supported :

Class Diagram

State Transition Diagram

Object Diagram

Interaction Diagram

Module Diagram

Process Diagram

Editing Diagrams :

Creating Diagrams

Adding items to diagrams

Editing items in diagrams

Zooming In and Out

Importing diagrams from other documents

Copying diagrams to the system clipboard

Generating C++ Code :

Generating Code

Generating Documentation


Print Dialog

The print dialog lets you specify if you want to print all diagrams or only the selected diagram.You can also specify  the order of printing the pages of a diagram if you want page number header and footers printed.

All	All diagrams will be printed.

Selected Only	Only the current active diagram will be printed.

Top Left	Put the page numbers at the top left of each page.

Bottom Left	Put the page numbers at the bottom left of each page.

Top Right	Put the page numbers at the top right of each page.

Bottom Right	Put the page numbers at the bottom right of each page.

None	Don't print page numbers.

Start Page	Page Number to use for first page.

left to right	If more than one page in a diagram. The pages will be printed in a row first order.

top to bottom	If more than one page in a diagram. The pages will be printed in a column first order.

fit on page	Will scale the diagram down so it fits on a page. This option has no effect if a diagram normally fits on a page. It will only scale larger diagrams so they can be printed on a single page.

Diagram Name(Header)	Put the diagram name in the header. The diagram name will be centered at the top of the page.

Header	Header text. This text will be centered at the top of the page. If the Header Diagram Name is specified this text will be appended to thge diagram name.

Diagram Name(Footer)	Put the diagram name in the footer. The diagram name will be centered at the bottom of the page.

Footer	Footer text. This text will be centered at the bottom of the page. If the Footer Diagram Name is specified this text will be appended to the diagram name.


Module Dialog

The modules dialog lets you change the name of a module.And lets you specify the classes associated with this module.

The list on the left lists all classes not in this module. The list on the right lists all the classes associated with this module. You can add classes to the module by selecting them in the left list

and the clicking the add button. To remove classes from the module select the classes in the right list and click the remove button.

Note a class is associated with only one specification module and one implementation module. Adding a class which was associated with another module of the same type (implementation or specification) will lose its associatin with that other module.

Note : a main module item is considered the same as an implementation module as far as class associations are concerned.


Generation Code
Generating Code

Code can be generating from a module diagram. Each module contains a list of classes for which a code template will be generated. The filename used for generating the code is the same as the name assigned to the module. The directory in which the file will be created depends on the setting used when generating code. All code can be generated in one directory independent of the module's position in the subsystem hiearchy, or the subsystem hierarchy is reflected in a directory structure. These setting can be specified in the dialog which is popped up when the generate code command is selected.

Classes can be assigned to modules via the the module template. To popup the module template double click on the module, or select the module en select the open command.

Note : if the subsystem hiearchy is used to create a directory hierachy you have to make sure that you assign valid dos directory names to the subsystems.


Generating Code Dialog
Generate Code Dialog

The generate code dialog lets you specify options for code generation: where is the root directory for source code generation and if you want to create a directory structure based on the subsystems.

root	directory is the directory in which source code for all toplevel modules. If Create Directories For Subsystems is not set all other modules will be generated in this directory as well, otherwise the subsystem directory structure will be generated in this directory.

Create Directories For Subsystems

This switch specifies if directories will be generated for the subsystems or not. If directories ar generated you have to make sure the susbsystem has a valid dos directory name.


Generating Diagrams
Importing Diagrams

To import or copy a diagram from one document into another.

1. Open both documents : the one to copy from and the one to copy the diagram to.

2. In the diagram containing the diagram you want to copy select the diagram from the diagram list window and copy it using the copy command.

3. Select the diagram list from the other document.

4. Paste the diagram by using the paste command.


Zooming

Use the Zoom In,ZoomOut, Full View commands to change the visible area inside a diagram. During zooming the top left corner is kept the same.Zooming does not affect how the diagram is printed.

Zoom will zoom in the current active diagram view,the icons will appear bigger but not the whole diagram may be visible.

Zoom Out will zoom out the current active diagram view, the icons will be drawn smaller and a larger area of the diagram will be visible.

Full View will zoom in 100% of the diagram. The items will be drawn in their regular size.


Creating Diagrams
Creating diagrams :

All diagrams are part of a document. Before you can create a diagram you must create a new document or open an existing document( Use the File menu New or Open commands).

Once a document is opened or created. A diagram list window  is opened. The diagram list window shows all existing diagrams in the document ( if a new document is created a class diagram is automatically created). Double clicking on diagram in the list will open a window for that diagram.

Note: existing diagrams can also be opened by drag and dropping  a file.

To create a new diagram select a new diagram command from the diagram menu. The diagram will automatically be assigned a name and a window for it will be opened.Now you can start adding icons and relations or editing them.


Adding Icons

From the toolbar select the item you want to add. Click with the left mouse button where you want to place the icon. The icon is always placed centered around the selected position.The newly placed object is automatically selected. If this item has a name you can start typing the name.

Adding relations/events/interactions

From the toolbar select the relation you want to add.In the diagram push down the left mouse button in the item from which the relation starts, than drag without releasing the button until over the object where the relation ends and release the button.The relation is automatically selected. If this relation can have a name you can just start typing it.


Editing items

Editing Item Templates:

With the selection tool double clicking on an item which has an associated template. This will popup its template (if the item has one). You can also select the item and execute the open command from the menu.

Moving a single item:

With the selection tool drag the item to a new position. Dragging means pressing the left button on the item you want to move, without releasing the button move the object to its new position than release the button.

Moving a group of items:

With the selection tool select the items you want to move. Multiple selections are done by dragging a rectangle around the objects to select. You can also use the shift key when selecting the objects,when holding down the shift key during selection previously selected items stay selected. Now you can drag the group by dragging one of its elements.

Aligning items:

Select the items you want to align.Multiple selections are done by dragging a rectangle around the objects to select. You can also use the shift key when selecting the objects,when holding down the shift key during selection previously selected items stay selected. Than choose the align command from the edit menu. This will popup the align dialog in which specify how you want to align the selected items.

Cutting items:

Use the cut command from the menu bar.

Cut cuts the items to an internal clipboard. Relational items which don't have both their parents cut will not be saved into the clip board.Items which contain other diagrams will have their complete diagram tree cut as well( if windows are open on parts of that hierarchy thos windows will be closed)

Copying items:

Use the copy command from the menu bar.

Copies the selected items to an internal clipboard. Relational items which don't have both their parents selected as well will not be copied to the clipboard. Items which contain other diagrams will have their complete diagram cut as well.

Pasting Items:

Use the paste command to copy the items from the clipboard onto the current diagram.Only items which are available inside the current diagram will be pasted.Relations will only be pasted if the two items to which they are connected are pasted as well.

Lowering items:

Use Lower from the edit pulldown on the menubar.

Lowering items will push the selected items down in the display/selection sequence.The selected items keep their relative order.

Raising items:

Use Raise from the edit pulldown on the menubar.

Raising items will move the selected items to the front in the display/selection sequence. The selected items keep their relative order.

Changing Fonts:

Use Font from the edit pulldown on the menubar.

This will popup a font chooser dialog.Select the desired font. The new font will be used for all newly entered items, and the font of the selected items will be changed.


Align Dialog

You can use the align dialog to align the selected items.You can align horizontally or vertically or both.

Horizontal allignment will move the selected items horizontally so that they are aligned as requested int the dialog.

Left alignment will move the selected items so that their left sides are aligned.The left side of the left most item is used as reference point.

Right alignment will move the selected items so that their right sides are aligned.The right side of the right most item is used as reference.

Horizontal center alignment will align the selected items so that their centers are aligned. The center point ( this is the point halfway between the left most items left side and the right most items right side) is used as reference.

Distribute horizontally will move the selected items so that the horizontal distance between them is the same.

Top alignment will move the items vertically so that their top sides are aligned. The top of the top most item is used as reference.

Bottom alignment will move the selected items vertically so that their bottom sides are aligned. The bottom side of the bottom most item is used as a reference.

Vertical center alignment will move the selected items vertically so taht their centers are aligned. The center point (this is the point halfway between the top of the top most item and the bottom of the bottom most item) is used as reference.

Distribute vertically will move the selected items so that the vertical distance between them is the same.


Class Diagram

The class diagram shows the classes and their relationships.

The following icons are available:

Class Icons :

class

class utility

class category

parameterized class

instantiated class

parameterized class utility

instantiated class utility

metaclass

note

Class Relations:

association ( generic relation)

inheritance

has

use

instantiates

metaclass

Templates in this diagram :

Class Template

Relation Template


Class Template

The Class Template dialog allows you to capture specific class/utility/metaclass information. To invoke this template double click on the class/utility/metaclass icon.

The following information can be edited:

Name	Class/utility/metaclass name

Ref	Make the selected graphics view to another class. After you referenced another class. Changes in any view of that class will affect all views which reference this class

DeRef	Unreference this view from the class it currently references. This means this view will be the only view referencing this class.

Abstract	Specifies if this is an abstract class. If set to abstract the class will have the Abstract Class Adornment.

Responsibilities	Specifies the responsibility/documentation of this class/utility/metaclass

Attributes	Lists the class attributes.To create a new attribute click the new button.The attribute template will be popped up. To edit an attribute double click on the attribute in the list. To delete an attribute select  it in the list and the click the delete button.

Operations	Lists the class operations. To create a new operation click the new button.The operation template will be popped up. To edit an operation double click on the operation in the list. To delete an operation select  it in the list and the click the delete button.

Constraints	Lists the class constraints. To create a new constraint click the new button.The constraint template will be popped up. To edit a constraint double click on the constraint in the list. To delete a constraint select  it in the list and the click the delete button.

Parameters	Lists the parameters of a parameterized or instantiated class/utility.To create a new parameter click the new button.The parameter template will be popped up. To edit a parameter double click on the parameter in the list. To delete a parameter select  it in the list and the click the delete button.

Export Control	Specifies whether the class is exported public is an implementation class

Persistence	Specifies whether the class's instances are persistent.

Concurrency	Specifies whether the class's semantics in the presence of multiple threads

Cardinallity	Specifies the number of instances this class can have

Space	Specifies the size of this class


Attribute Template

This template allows you to edit class attributes.

Name	The name of the attribute

Class	The class of the attribute

Default Value	The attributes default value

Export Control	The export control of this attribute. This can be public, private, implementation or protected

Visible In Diagram	Indicates wether the attribute will be displayed inside the object or class "cloud"


Operation Template

The operation template allows you to edit class operations.

Name	The name of the operation

Return Class	The return class of the operation

Export Control	The export control of the operation: Can be public(default),  private, implementation or protected.

Concurrency	The concurrency of the operation in the presence of multiple threads. Can be sequential,guarded,synchronous or active

Space	The space complexity of this operation

Time	The time complexity of this operation

Parameters	The formal parameters of this operation

Qualification	The qualification of this operation

Protocol	The operations protocol

Exceptions	Exceptions which can be thrown by this operation

Visible In Diagram	Indicated whether he operation will be visible inside the class cloud or not.

The dialog also allows you to edit the Preconditions,Semantics or Postconditions of the operation,


Precondition,Semantics and Postcondition Template

This dialog allows you to specify the semantics and the object diagram illustrating the precondition,semantics or postcondition of an operation.

Source	Allows you to describe the precondition, semantics or postcondition.

Object Diagram	Specifies the name of the object diagram illustrating the precondition,semantics or postcondition.


Relation Template

The Relation Template allows you to specify details of a class relationship.

Name	Specifies the name of the relation.

Cardinality From	Specify the cardinality at the start of the relation.

Cardinality To	Specifies the cardinality at the end of the relation.

Properties	Specifies the properties of this relation. If the property is not undefined the relation will be adorned with the correct icon.

Physical Containment	Specifies the physical containment for has relations.

Relation Type	Specifies which kind of relation this is.

From Role	Specifies the role of the class at the start side of the relation.

From Key	Specifies the keys at the start side of the relation.

From Constraint	Specifies the constraint at the start side of the relation.

To Role	Specifies the role of the class at the end side of the relation

To Key	Specifies the keys at the end side of the relation.

To Constraint 	Specifies the constraint at the end side of the relation.


State Transition Diagram

This diagram shows the state space, the events that cause transition and the actions that are a result of these events.

Icons in this diagram :

State Icon	Represents a state.States can be nested.

History Icon	An icon which can be put inside a state icon to indicate the state has a history

State Transitions

Event/action	Represents an event and or an action as a result of this event.

Start	Represent the a start state of this state diagram

Stop	Represents a possible end state in this diagram.

Note: for events/actions the toolbar shows three icons : one will represent the event as a straight line, the second one will represent it as clockwise arc and the third one will represent it as a counter clockwise arc. You can change the representation of the events in the  event template.

Dialogs in this diagram:

State Template

Event/Action Template


State Template

The state template allows you to enter the details of a state.

State Name	Specifies the name of the state

Actions	Allows you to specify some actions associated with the state. These actions will be displayed inside the state icon.


Event/Action Template

The event/action template allows you to modify the event guard and action name.

Event	Specifies the name of the event causing the transition.

Guard	Specifies the guard expression for the event.

Action	Specifies the action as a result of the event.

Representation	Allows you to change the graphical appearance of the event/action. The event can be represented by a straight line a clockwise arc or a counter clockwise arc.


Object Diagram

This diagram shows the objects and their relationships.

Object Item	Represents an object.

Relation	Represents a relation ship between objects. This relation has no matching icon in the tool bar. The relation is automatically created when a message is added between the two objects.

Simple Message	Represents a simple message between two objects

Synchronous Message	Represents a synchronous message between two objects

Balking Message 	Represents a balking message between two objects

Timeout Message 	Represents a timeout message between two objects.

Asynchronous Message	Represents an asynchronous message between two objects.

Visibilities can be added and modified through the object relation dialogthis dialog is invoked by double clicking on the relation.

Other dialogs in this diagram

Object Template

Message Template


Object Relation Dialog

This dialog allows you to modify visibilities, roles, keys and constraints of a relation between objects.

Visibility From	Specifies how this object is visible as seen from the other object. The "from" is the side from which the first entered message was started.The Shared toggle button can be used tow specify whether the structure is shared or not.

Visibility To	Specifies how this object is visible as seen from the other object. The "to" is the side to which the first entered message was sent.The Shared toggle button can be used tow specify whether the structure is shared or not.

Role	Specifies the role of the object.

Key	Specifies the key of the object.

Constraint	Specifies the constraint of the relation.


Object Template

This dialog allows you to add detailed information to an object.

Object Name	The objects name

Class Name	The class of which this object is an instance

Attributes	Specifies a list of attributes ( repeated from the class) for this object.To create a new attribute click the new button.The attribute template will be popped up. To edit an attribute double click on the attribute in the list. To delete an attribute select  it in the list and the click the delete button.


Message Template

This dialog allows you to edit the details of a message.

Synchronization	The synchronization type of the message : synchronous, asynchronous, balking, simple or timeout.

Operation Name	Name of the operation

Return Object	Object returned by the message

Actual Arguments	Actual arguments used for the operation

Sequence	The sequence of this message in the diagram


Interaction Diagram

This diagram shows the execution of a scenario. This diagram shows basically the same information as the Object Diagram but differently organized.

Object	Represents an object in the scenario

Event/Action	Represents an event which causes an action in the scenario

Note that scripts can be entered in the event template.

By default all messages have no focus of control. If you want a  "focus of control" to a set of messages select all the messages which belong to that group and execute the Focus command ( Edit/Focus). You can reset the "focus of control" by selecting all messages for which you want to reset the "focus of control"  and execute the Reset Focus command.

Dialogs in this diagram:

Interaction object template

Interaction event template


Interaction Object Template

Specifies the name the object class of an object in the interaction diagram.

Object Name	The name of the object

Object Class	The class of which this object is an instance


Interaction Event Template

Specifies the script for and event and the name of the operation for the event

Event/Operation Name	Specifies the name of the event or operation

Script	Specifies the script associated with this interaction. The script will be drawn on the left side of the diagram at the same height of the interaction icon.


Module Diagram

This diagram shows physical view  of a system (files and directories and dependencies).

Main Program	This icon represents the main program module.

Specification	This icon represents a specification file. (in C++ : include file)

Body	This icon represents a implementation file. (in C++ : the C,CPP... file)

Subsystem	This icon represents a hierarchy in the modules. ( Could be represented by a directory)

Dependency 	Shows the dependencies between the different modules an subsystems.


Process Diagram

This diagram shows the hardware allocation: processors, and devices

Processor	represents a processor in the system. The processor can be annotated with the processes it owns.

Device	Represents a device in the system (e.g. monitor, keyboard, sensor...}

Dialog for this diagram :

Processor Template


Processor Template

Allows you to specify the name of the processor and the processes which run on it and the type of scheduling used for the processor.

Name	Name of the processor

Scheduling	Type of scheduling used on the processor

Processes 	Lists the processes running on this processor. To add an new process click the new button.To edit a process double click on it in the list.To delete a process select it in the list and then click the delete button.


Copying diagrams to the system clipboard

You can include diagrams or parts of diagrams into other windows applications.

To copy graphics to the system clipboard select the graphics you want to copy. Than execute the copy to clipboard command from the edit menu. This will copy the selected graphics to the clipboard in bitmap format. Any program which can paste bitmap formats can use this info.

Note since diagrams in "Object Domain" can become very big it's sometimes not possible to copy the selected items to the cipboard because of insuffiecient memory. The problem will warn the user about this.


Generating Documentation
Generating text documentation from diagrams

Use the generate documentation command from the file menu to generate an ascii document of a class diagram. The document lists the contents of the diagram and templates. You are prompted for the file name for this document.


Ordering Info

This program is not public domain or freeware! It is being distributed as shareware. You are only allowed to evaluate this program for a trial period of 30 days. If you want to continue using this program after the trial period you need to register your copy. Not registering after the trial period is a copyright violation.

The shareware version has exactly the same as the official 1.02 version except that the printout will contain a message about this being an evaluation version only.

Also by registering you will receive the latest version (bug fixes + new features if available ).

Registered users will also get discounts when upgrading.

One more thing for registered users : a 32 bit version of this program ( higher performance

+ larger diagrams )

For more questions,enhancement requests and bug reports send mail or email to :

email:

   internet: dirkv@netcom.com

   compuserve id : 71202.2323

  mail address :

Dirk Vermeersch

1397 Ridgewood Drive

San Jose CA 95118

Fee:

The license fee for this program is $99.00 per copy.

No credit cards accepted except for registration via Compuserve.

Compuserve Members can register through Compuserve.( 71202.2323) GO SWREG (ID 4479)

Registered users can receive the latest version by sending a check or money order for

US $20 .

How to register or upgrade:

Fill out supplied order form and send it together with your check to :

Dirk Vermeersch

1397 Ridgewood Drive

San Jose CA 95118


Order Form

Print this page and fill out. Send together with your check for $99 per copy to:

(fee for registered users is $20 )

Dirk Vermeersch

1397 Ridgewood Drive

San Jose CA 95118

Name:

______________________________________________________________________________

e-mail address:

______________________________________________________________________________

Company:

______________________________________________________________________________

Address:

______________________________________________________________________________

______________________________________________________________________________

______________________________________________________________________________

______________________________________________________________________________

______________________________________________________________________________

______________________________________________________________________________

How did you find out about Object Domain?:

______________________________________________________________________________

______________________________________________________________________________

______________________________________________________________________________

______________________________________________________________________________

Number of Copies requested:______________*  $99.00  = ______________________________

Floppy format requested : 3.5____ 5.25____